home *** CD-ROM | disk | FTP | other *** search
/ CyberMycha 2008 January / Cybermycha 1_2008.iso / Data.cab / _9FA62CA08D394D6FBCEED6B5F7D30080 < prev    next >
Encoding:
Text File  |  2004-07-27  |  1.4 KB  |  51 lines

  1.  
  2. hlsl("
  3. #include <common_hlsl.h>
  4. #include <cardef.h>
  5.  
  6. sampler2D    sColor: register(s0);     
  7. samplerCUBE    sDiffuseCubemap: register(s1);
  8. samplerCUBE sCubemap: register(s2);
  9. sampler2D    sScratch: register(s3);
  10. // sampler2D    sNormalmap: register(s4);    
  11.  
  12. static const float3 FlatNormal = float3(0.0f, 0.0f, 1.0f);
  13.  
  14. struct PS_INPUT
  15. {
  16.     HALF2      uvColor : TEXCOORD0;
  17.     float3      E : TEXCOORD1;
  18.     float3x3    tangentSpaceTranspose: TEXCOORD2;
  19.     HALF        DamageLevel: TEXCOORD5;
  20. };    
  21.     
  22. HALF4 main( PS_INPUT input ): COLOR {
  23.  
  24. //    HALF3 Normalmap = tex2D( sNormalmap, input.uvColor )*2-1;
  25.     HALF3 Normalmap = FlatNormal;
  26.  
  27.     HALF3 R =  reflect( input.E, Normalmap );
  28.     input.E = normalize( input.E );
  29.     
  30.     HALF3 uvwDiffuseCubemap = mul( -Normalmap, input.tangentSpaceTranspose);
  31.     HALF3 uvwCubemap = mul( R, input.tangentSpaceTranspose);
  32.     
  33.     HALF Diffuse = texCUBE( sDiffuseCubemap, uvwDiffuseCubemap );
  34.     HALF3 Cubemap = texCUBE( sCubemap, uvwCubemap);
  35.     HALF  Fresnel = fresnel( Normalmap, input.E, 2)*FRESNELSCALE;
  36.  
  37.     HALF Scratch = tex2D(sScratch, input.uvColor).a * input.DamageLevel;    
  38.     HALF4 Color = tex2D( sColor, input.uvColor );
  39.  
  40.     HALF CubemapMask = saturate(Color.a*2-1); //+Scratch; 
  41.     // HALF SpecularMask = saturate(Color.a*2);
  42.     CubemapMask = saturate(CubemapMask+Fresnel*CubemapMask*16);
  43.  
  44.  
  45.     Color.rgb = lerp(Color.rgb, SCRATCHCOLOR, Scratch);
  46.     Color.rgb = Color.rgb*Diffuse+Cubemap*CubemapMask;
  47.     return Color; 
  48. }
  49.  
  50. ")
  51.